package com.xuecheng.media.service.jobhandler;

import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * xxl-job测试执行器任务类
 */
@Slf4j
@Component
public class SampleJob {
    /**
     * 1.简单任务示例
     */
    @XxlJob("testJob")
    public void testJob() throws Exception{
        // 获取调度中心配置的参数
        String triggerTime = XxlJobHelper.getJobParam();
        //获取xxl-job的上下文对象
        XxlJobContext context = XxlJobContext.getXxlJobContext();
        new Date();
        log.info("【任务触发】预设触发时间: {}, 实际执行时间: {}", triggerTime, new Date());

        // 模拟任务耗时（例如5秒）
        Thread.sleep(5000);
        log.info("【任务完成】");
    }

    /**
     * 2.分片广播任务
     */
    @XxlJob("shardingJobHandler")
    public void shardingJobHandler(){
        //获取当前分片序号
        int shardIndex = XxlJobHelper.getShardIndex();
        //分片总数
        int shardTotal = XxlJobHelper.getShardTotal();
        log.info("分片参数：当前分片序号 = {}，分片总数 = {}",shardIndex,shardTotal);
        log.info("开始执行第" + shardIndex + "批任务");
    }
}
